package com.jinzecloud.reportapproval.bean;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jinzecloud.reportapproval.enums.StateEnum;
import com.jinzecloud.reportapproval.enums.TableEnums;
import com.jinzecloud.reportapproval.utils.AuditUtil;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;

@Data
@TableName("safety_assessment")
@Accessors(chain = true)
public class SafetyAssessment {

    /**
     * 自增ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 是否有安全防护装置
     */
    private Boolean hasSafetyDevice;

    /**
     * 判定结果
     */
    private String judgmentResult;

    /**
     * 直线重叠量
     */
    private String overlapLength;

    /**
     * 防护罩是否包络住至机器的第一个固定轴承座的整个传动轴
     */
    private Boolean isShieldEnveloping;
    /**
     * 机器工工作幅宽
     */
    private String workingWidth;

    /**
     * 有无离合保护装置
     */
    private Boolean hasClutchProtection;

    /**
     * 判定结果
     */
    private String judgmentResultClutch;

    /**
     * 是否符合下面规定
     */
    private Boolean meetsRequirements;

    /**
     * 是否设置前部防护
     */
    private Boolean hasFrontProtection;

    /**
     * 向前延伸距离
     */
    private String frontExtensionDistance;

    /**
     * 离地高度
     */
    private String groundClearanceHeight;

    /**
     * 防护栅栏的间隙
     */
    private String protectiveFences;

    /**
     * 判定结果
     */
    private String judgmentResultFront;

    /**
     * 是否设置端部防护
     */
    private Boolean hasEndProtection;

    /**
     * 分别向左右两侧延伸距离
     */
    private String sideExtensionDistance;

    /**
     * 是否能覆盖地面以上工作部件
     */
    private Boolean canCoverAboveGround;

    /**
     * 防护栅栏的间隙
     */
    private String fenceGap;

    /**
     * 判定结果
     */
    private String judgmentResultFence;

    /**
     * 是否覆盖工作部件轨迹最外端区域且不与运动工作部件接触
     */
    private Boolean coversOuterArea;

    /**
     * 判定结果
     */
    private String judgmentResultOuterArea;

    /**
     * 是否覆盖整个工作部件
     */
    private Boolean coversWholePart;
    /**
     * 规定
     */
    private String stipulate;

    /**
     * 判定结果
     */
    private String judgmentResultWholePart;

    /**
     * 是否有保持稳定的措施
     */
    private Boolean hasStabilizingMeasures;

    /**
     * 判定结果
     */
    private String judgmentResultStabilizing;

    /**
     * 是否粘贴“机器运转时，请勿靠近”
     */
    private Boolean hasWarningLabel;

    /**
     * 是否符合GB 10396的相关规定
     */
    private Boolean compliesGb10396;

    /**
     * 判定结果
     */
    private String judgmentResultGb;

    /**
     * 是否有安全注意事项
     */
    private Boolean hasSafetyNotes;

    /**
     * 是否在使用说明书中复现
     */
    private Boolean inUserManual;

    /**
     * 判定结果
     */
    private String judgmentResultManual;

    /**
     * 状态
     */
    private Integer state;

    @TableField(exist = false)
    private String stateText;

    public String getStateText() {
        return AuditUtil.getStateText(TableEnums.SAFETY_ASSESSMENT.getTableName(), state).getDesc();
    }

    /**
     * 检测人
     */
    private String checkerPerson;

    /**
     * 记录人
     */
    private String recorder;

    /**
     * 校核人
     */
    private String checker;

    /**
     * 创建用户id
     */
    private Integer createdUserId;

    /**
     * 审核意见
     */
    private String auditOpinion;

    /**
     * 审核时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date auditDate;

    /**
     * 生成word地址
     */
    private String wordPath;

    /**
     * 生成pdf地址
     */
    private String pdfPath;

    /**
     * 项目编号
     */
    private String projectCode;

    /**
     * 检查日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date checkDate;

}
